import { baseUrl } from './env'
import axios from 'axios'
import qs from 'qs'
import router from '../router'
import { Toast } from 'mint-ui';

// http request 拦截器
axios.interceptors.request.use((config) => {
    let token = localStorage.getItem("yidianselltoken");
    if (token) {  // 判断是否存在token，如果存在的话，则http headers加上token
      config.headers.common['token'] = token;
      config.headers.common['accept-language'] = 'cn';
    }
    return config;
  }, error => {
    return Promise.reject(err);
  });

// http response 拦截器
axios.interceptors.response.use(
  response => {
    return response;
  }, error => {
    if (error.response) {
      // switch (error.response.status) {
      //   case 401:
      //     // 返回 401 清除token信息并跳转到登录页面
      //     router.replace({
      //       path: 'login',
      //       query: {redirect: router.currentRoute.fullPath}
      //     })
      // }
    }
    return Promise.resolve(error.response);   // 返回接口返回的错误信息
  });

//处理网络或者服务器的错误
function checkStatus(response) {
  if (response.status === 200 || response.status === 304) {
    return response
  }
  let res = {};
  // 因为前面把错误扶正了, 所以 404, 500 这样的错误能走到这里
  switch (response.status) {
    case 404:
      res.message = "api path not find !";
      break;
    case 500:
      res.message = "api error !";
      break;
  }
  res.code = response.status;
  res.data = null;
  res.sysMessage = response.statusText;
  return res
}
//处理程序端的错误,
function checkCode(res) {
  // 如果状态 code 异常(这里已经包括网络错误, 服务器错误, 后端抛出的错误), 可以弹出一个错误提示, 告诉用户
  if (res.success !== true) {  // 或者判断res.code, 视返回的数据来决定

  }
  return res
}

export default {
  post(url, data) {
    return axios({
      method: 'POST',
      url: baseUrl+url,
      data: qs.stringify(data),
      timeout: 30000,
      headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
      }
    }).then(checkStatus).then(checkCode)
  },
  get(url, data) {
    return axios({
      method: 'GET',
      url: baseUrl+url,
      params: data,
      timeout: 30000,
      headers: {
        'X-Requested-With': 'XMLHttpRequest', //如果 requestedWith 为 null，则为同步请求, 若为XMLHttpRequest 则异步请求
      }
    }).then(checkStatus).then(checkCode)
  }
}



